import { request } from '../request';

/** get role list */
export function fetchGetRoleList(params?: Api.SystemManage.RoleSearchParams) {
  return request<Api.SystemManage.RoleList>({
    url: '/systemManage/getRoleList',
    method: 'get',
    params
  });
}
/**
 * get all roles
 *
 * these roles are all enabled
 */
export function fetchGetAllRoles() {
  return request<Api.SystemManage.AllRole[]>({
    url: '/systemManage/getAllRoles',
    method: 'get'
  });
}

/** get user list */
export function fetchGetUserList(params?: Api.SystemManage.UserSearchParams) {
  return request<Api.SystemManage.UserList>({
    url: '/dbuser/list',
    method: 'get',
    params
  });
}
/** get user list */
export function fetchGetAllBatchList() {
  return request<Api.SystemManage.BatchList>({
    url: '/batch/all',
    method: 'get',
  });
}
/** get hosp list */
export function fetchGetHospList(params?: Api.SystemManage.HospSearchParams) {
  return request<Api.SystemManage.HospList>({
    url: '/dbhosp/list',
    method: 'get',
    params
  });
}
/** get all hosp */
export function fetchGetAllHosp() {
  return request<Api.SystemManage.HospList>({
    url: '/dbhosp/all',
    method: 'get'
  });
}
export function fetchGetAllAreaList() {
  return request({
    url: '/area/all_list',
    method: 'get'
  });
}
/** get all user */
export function fetchGetAllUser() {
  return request<Api.SystemManage.UserList>({
    url: '/dbuser/all',
    method: 'get'
  });
}
/** get check category list */
export function fetchGetCheckCategoryList(params?: Api.SystemManage.CheckCategorySearchParams) {
  return request<Api.SystemManage.CheckCategoryList>({
    url: '/category/list',
    method: 'get',
    params
  });
}
/** get check area list */
export function fetchGetCheckAreaList(params?: Api.SystemManage.CheckAreaSearchParams) {
  return request<Api.SystemManage.CheckAreaList>({
    url: '/area/list',
    method: 'get',
    params
  });
}
/** get check item list */
export function fetchGetCheckItemList(params?: Api.SystemManage.CheckItemSearchParams) {
  return request<Api.SystemManage.CheckItemList>({
    url: '/areaItem/list',
    method: 'get',
    params
  });
}
/** get area info by id **/
export function fetchGetCheckAreaById(id: string){
  return request<Api.SystemManage.CheckArea>({
    url: `/area/${id}`,
    method: 'get'
  });
}
/** get item info by id **/
export function fetchGetItemById(id: string){
  return request<Api.SystemManage.CheckItem>({
    url: `/areaItem/${id}`,
    method: 'get'
  });
}
/** get check grade list */
export function fetchGetCheckGradeList(params?: Api.SystemManage.CheckGradeSearchParams) {
  return request<Api.SystemManage.CheckGradeList>({
    url: '/grade/list',
    method: 'get',
    params
  });
}
/** get menu list */
export function fetchGetMenuList() {
  return request<Api.SystemManage.MenuList>({
    url: '/systemManage/getMenuList/v2',
    method: 'get'
  });
}

/** get all pages */
export function fetchGetAllPages() {
  return request<string[]>({
    url: '/systemManage/getAllPages',
    method: 'get'
  });
}

/** get menu tree */
export function fetchGetMenuTree() {
  return request<Api.SystemManage.MenuTree[]>({
    url: '/systemManage/getMenuTree',
    method: 'get'
  });
}
export function fetchAddHosp(params: Api.SystemManage.HospAddParams) {
  // 创建一个新的对象，将 deleteFlag 转换为整数
  const updatedParams = {
    ...params,
    deleteFlag: Number(params.deleteFlag), // 确保 deleteFlag 转换为 int
  };
  return request({
    url: '/dbhosp/save',
    method: 'PUT',
    data: updatedParams, // 使用更新后的参数对象
  });
}
export async function fetchEditHosp(params: Api.SystemManage.HospEditParams) {
  // 删除 index 字段
  return request({
    url: `/dbhosp/update/${params?.hospId}`, // 动态路径，包含主键 ID
    method: 'PUT', // 使用 PUT 方法
    data: params // 将参数作为请求体发送
  });
}
export async function deleteHospital(id?: string) {
  return request({
    url: `/dbhosp/delete/${id}`, // 动态路径，包含主键 ID
    method: 'PUT' // 使用 PUT 方法
  });
}




export function fetchAddUser(params: Api.SystemManage.UserAddParams) {
  // 创建一个新的对象，将 deleteFlag 转换为整数
  const updatedParams = {
    ...params,
    deleteFlag: Number(params.deleteFlag), // 确保 deleteFlag 转换为 int
  };
  return request({
    url: '/dbuser/save',
    method: 'PUT',
    data: updatedParams, // 使用更新后的参数对象
  });
}
export async function fetchEditUser(params: Api.SystemManage.UserEditParams) {
  return request({
    url: `/dbuser/update/${params?.id}`, // 动态路径，包含主键 ID
    method: 'PUT', // 使用 PUT 方法
    data: params // 将参数作为请求体发送
  });
}
export async function deleteUser(id?: string) {
  return request({
    url: `/dbuser/delete/${id}`, // 动态路径，包含主键 ID
    method: 'PUT' // 使用 PUT 方法
  });
}


export function fetchAddCheckCategory(params: Api.SystemManage.CheckCategoryAddParams) {
  // 创建一个新的对象，将 deleteFlag 转换为整数
  const updatedParams = {
    ...params,
    deleteFlag: Number(params.deleteFlag), // 确保 deleteFlag 转换为 int
  };
  return request({
    url: '/category/save',
    method: 'PUT',
    data: updatedParams, // 使用更新后的参数对象
  });
}
export async function fetchEditCheckCategory(params: Api.SystemManage.CheckCategoryEditParams) {
  return request({
    url: `/category/update/${params?.id}`, // 动态路径，包含主键 ID
    method: 'PUT', // 使用 PUT 方法
    data: params // 将参数作为请求体发送
  });
}
export async function deleteCheckCategory(id?: string) {
  return request({
    url: `/category/delete/${id}`, // 动态路径，包含主键 ID
    method: 'PUT' // 使用 PUT 方法
  });
}


export function fetchAddCheckArea(params: Api.SystemManage.CheckAreaAddParams) {
  // 创建一个新的对象，将 deleteFlag 转换为整数
  const updatedParams = {
    ...params,
    deleteFlag: Number(params.isusing), // 确保 isusing 转换为 int
  };
  return request({
    url: '/area/save',
    method: 'PUT',
    data: updatedParams, // 使用更新后的参数对象
  });
}
export async function fetchEditCheckArea(params: Api.SystemManage.CheckAreaEditParams) {
  return request({
    url: `/area/update/${params?.id}`, // 动态路径，包含主键 ID
    method: 'PUT', // 使用 PUT 方法
    data: params // 将参数作为请求体发送
  });
}
export async function deleteCheckArea(id?: string) {
  return request({
    url: `/area/delete/${id}`, // 动态路径，包含主键 ID
    method: 'PUT' // 使用 PUT 方法
  });
}
export function fetchGetAllCategory() {
  return request<Api.SystemManage.AllCheckCategory[]>({
    url: '/category/getAllCategory',
    method: 'get'
  });
}
export function fetchGetAllArea() {
  return request<Api.SystemManage.AllCheckArea[]>({
    url: '/area/getAllArea',
    method: 'get'
  });
}
export function fetchAddCheckItem(params: Api.SystemManage.CheckItemAddParams) {
  // 创建一个新的对象，将 deleteFlag 转换为整数
  const updatedParams = {
    ...params,
    deleteFlag: Number(params.isusing), // 确保 isusing 转换为 int
  };
  return request({
    url: '/areaItem/save',
    method: 'PUT',
    data: updatedParams, // 使用更新后的参数对象
  });
}
export async function fetchEditCheckItem(params: Api.SystemManage.CheckItemEditParams) {
  return request({
    url: `/areaItem/update/${params?.id}`, // 动态路径，包含主键 ID
    method: 'PUT', // 使用 PUT 方法
    data: params // 将参数作为请求体发送
  });
}
export async function deleteCheckItem(id?: string) {
  return request({
    url: `/areaItem/delete/${id}`, // 动态路径，包含主键 ID
    method: 'PUT' // 使用 PUT 方法
  });
}
export function fetchAddCheckGrade(params: Api.SystemManage.CheckGradeAddParams) {
  // 创建一个新的对象，将 deleteFlag 转换为整数
  const updatedParams = {
    ...params,
    deleteFlag: Number(params.deleteFlag), // 确保 isusing 转换为 int
  };
  return request({
    url: '/grade/save',
    method: 'PUT',
    data: updatedParams, // 使用更新后的参数对象
  });
}
export async function fetchEditCheckGrade(params: Api.SystemManage.CheckGradeEditParams) {
  return request({
    url: `/grade/update/${params?.id}`, // 动态路径，包含主键 ID
    method: 'PUT', // 使用 PUT 方法
    data: params // 将参数作为请求体发送
  });
}
export async function deleteCheckGrade(id?: string) {
  return request({
    url: `/grade/delete/${id}`, // 动态路径，包含主键 ID
    method: 'PUT' // 使用 PUT 方法
  });
}
/** get batch list */
export function fetchGetBatchList(params?: Api.SystemManage.BatchSearchParams) {
  return request<Api.SystemManage.BatchList>({
    url: '/batch/page',
    method: 'get',
    params
  });
}

export async function fetchEditBatch(params: Api.SystemManage.BatchEditParams) {
  // 删除 index 字段
  return request({
    url: `/dbhosp/update/${params?.id}`, // 动态路径，包含主键 ID
    method: 'PUT', // 使用 PUT 方法
    data: params // 将参数作为请求体发送
  });
}
export async function deleteBatch(id?: string) {
  return request({
    url: `/dbhosp/delete/${id}`, // 动态路径，包含主键 ID
    method: 'PUT' // 使用 PUT 方法
  });
}
export async function fetchGetBatchDetail(id?: string) {
  return request({
    url: `/score/getBatchScoreInfo?batchId=${id}`, // 动态路径，包含主键 ID
    method: 'GET' // 使用 PUT 方法
  });
}
